Performing data analytics utilizing a user configurable group of reusable modules

ABSTRACT

According to one embodiment of the present invention, a computer-implemented method of performing analytics on a large quantity of data accommodated by an external mass storage device is provided. The analytics may be divided into a set of modules, wherein each module is selectively executed and comprises a script for a parallel processing engine to perform a corresponding atomic operation on the analytics. A user selection is received of one or more modules to perform desired analytics on the large quantity of data from the external mass storage device, and the selected modules execute scripts for the parallel processing engine to perform the corresponding atomic operations of the desired analytics.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.14/197,890, entitled “PERFORMING DATA ANALYTICS UTILIZING A USERCONFIGURABLE GROUP OF REUSABLE MODULES” and filed Mar. 5, 2014, thedisclosure of which is incorporated herein by reference in its entirety.

BACKGROUND

1. Technical Field

Present invention embodiments relate to data analysis, and morespecifically, to the efficient generation of data analytics indistributed file systems.

2. Discussion of the Related Art

Distributed file systems and clustered file systems have been developedin part to address the challenges posed by big data. Distributed filesystems are typically shared across multiple servers in a cluster thatoften operate in parallel to dramatically increase processing speed anddata throughput, all while maintaining the appearance of local filesystems to the client. The term “big data” generally refers to data setswith a quantity of data so large that traditional enterprise (such asin-memory) database management and file system solutions cannot storethem and/or process them efficiently or quickly. Many technologies,including Internet searching, genomics, market data and social mediasolutions are also subject to big data issues.

BRIEF SUMMARY

According to one embodiment of the present invention, acomputer-implemented method of performing analytics on a large quantityof data accommodated by an external mass storage device is provided. Theanalytics may be divided into a set of modules, wherein each module isselectively executed and comprises a script for a parallel processingengine to perform a corresponding atomic operation on the analytics. Auser selection is received of one or more modules to perform desiredanalytics on the large quantity of data from the external mass storagedevice, and the selected modules execute scripts for the parallelprocessing engine to perform the corresponding atomic operations of thedesired analytics.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

Generally, like reference numerals in the various figures are utilizedto designate like components.

FIG. 1 is a diagrammatic illustration of an example computingenvironment for use with an embodiment of the present invention.

FIG. 2 is a procedural flow chart illustrating a manner in which data isprocessed to generate analytics according to an embodiment of thepresent invention.

FIG. 3 is a flow diagram illustrating a manner in which analyticsmodules are processed using map and reduce steps according to anembodiment of the present invention.

FIG. 4 is a procedural flow chart illustrating engines used in thegeneration of data analytics according to an embodiment of the presentinvention.

FIG. 5 is a procedural flow chart illustrating the generation of dataanalytics according to an embodiment of the present invention.

DETAILED DESCRIPTION

Present invention embodiments may perform big data analytics in adistributed file system using analytics modules. Partial solutions maybe generated after each analytics module, validated, and used and reusedas the input for one or more subsequent analytics modules. Eachanalytics module may be divided into atomic operations, such as map andreduce operations, wherein each module may perform preprocessing steps,statistical analytics, and post-processing steps. User input may also bereceived which selects certain ones of the analytics modules forexecution, determines analytic module orderings, and provides parametersto one or more analytics modules.

Performing data analytics on big data poses significant design andimplementation challenges. Previously, enterprise solutions would feedlarge amounts of data into specialty hardware on a single computer witha large memory that executes very quickly. The size of the data setsinvolved with big data, however, are so large that enterprise (such asin-memory based) implementations are no longer feasible. Yet, mostexisting enterprise analytics tools are only designed for in-memorysolutions. The raw data to be used in big data analytics requirespre-processing before it can be provided to the statistical models.Depending on the user scenario, different pre-processing steps may berequired for each client job to prepare and cleanse the data. Further,many statistical models are available which the user may wish to applyto the same data set. For example, classification can be performed viaeither linear logistic regression or by a support vector machine (SVM)algorithm. Another difficult issue is determining which statisticalmodel will generate a more accurate analytics. Finally, big dataanalytics involves so much data that traditional storage and processingsystems are overwhelmed.

With reference now to FIG. 1, an example computing environment of apresent invention embodiment shows a distributed file system allowingparallel processing in order to greatly enhance data storage andprocessing throughput. An embodiment is shown in which one or moreclient jobs from a client system 105 are provided to a job tracker 110that distributes the client tasks to task trackers 115(a)-115(c) onmultiple servers 120(a)-120(c) across the network 125 for the purpose ofgenerating data analytics using analytics logic 127 of server 120(d). Aname node 130 may track data distributed in data nodes 135(a)-135(c)across the network 125 associated with the client job, where each datanode 135(a)-135(c) stores blocks of distributed data. Client systems 105may enable users to submit information (e.g., data such as raw analyticsdata, input such as module selections, etc.) to server systems120(a)-120(e) so that the data may be stored and data analyticsprocessing may be initiated.

Server systems 120(a)-120(e), (and solutions thereon such as job tracker110, analytics logic 127 and name node 130) and client system(s) 105 maybe remote from each other and communicate over network 125. Solutionssuch as analytics logic 127, job tracker 110, name node 130, tasktrackers 115(a)-115(c), data nodes 135(a)-135(c), etc., may vary innumber, and may be located on the same physical server or arranged inany way across multiple physical servers such as servers 120(a)-120(e),as the example shows in FIG. 1. The network may be implemented by anynumber of any suitable communications media (e.g., wide area network(WAN), local area network (LAN), Internet, Intranet, etc.). Networkconnections between data nodes 135(a)-135(c) name node 130, job tracker110, and task trackers 115(a)-115(c) may be high speed to avoidbottlenecking. Alternatively, server systems 120(a)-120(e) and clientsystems 105 may be local to each other, and communicate via anyappropriate local communication medium (e.g., local area network (LAN),hardwire, wireless link, Intranet, etc.).

Server systems 120(a)-120(e) and client systems 105 may be implementedby any conventional or other computer systems, and may be equipped witha display or monitor, a base (e.g., including at least one processor 15,one or more memories 35 and/or internal or external network interfacesor communications devices 25 (e.g., modem, network cards, etc.)),optional input devices (e.g., a keyboard, mouse or other input device),and any commercially available and custom software (e.g.,server/communications software, distributed file system software,analytics generation software, map/reduce software, etc.).

Analytics logic 127 may include one or more modules or units to performthe various functions of present invention embodiments described below.The various modules may be implemented by any combination of anyquantity of software and/or hardware modules or units, and may residewithin memory of a physical server 120(d) and/or client systems 105 forexecution by a physical processor.

The example embodiment shown in FIG. 1 may be implemented partly with aconventional Hadoop system. Hadoop is a system that distributes bothprocessing and storage across a network. Rather than specialty hardware,commonly available and relatively inexpensive commodity hardware may beused. By using a substantial number of servers 120(a)-120(e), theprocessing performance may be increased such that big data processingbecomes possible. While servers 120(a)-120(e), also known as nodes, areshown, any number of servers are possible to perform distributed storageand processing according to techniques of present invention embodimentspresented herein. The number of servers may be scaled even to thousands,which allows both processing power and storage capacity to be increasedsubstantially linearly. Further, the number of client systems 105,analytics logic modules 127, job trackers 110, and name nodes 130 mayvary, although an implementation such as Hadoop may only have one jobtracker and name node.

The distributed file system of FIG. 1, which may be based on a HadoopDistributed File System (HDFS), may use a master/slave architecture.Incoming data, for example from a client system 105, may be split intodata blocks of a predetermined size and distributed by the name node 130(although data doesn't necessarily pass directly through the name node)to the data nodes 135(a)-135(c). Blocks may be duplicated and stored inmultiple locations for redundancy and to aid in error recovery and faulttolerance. The name node 130 may track the locations of data blocks indata nodes 135(a)-135(c), each of which may be, for example, 64megabytes in size. The name node 130 may also track the status of eachof the data nodes on the servers 120(a)-120(c), which may beoperational, disabled, or have a troubled status. In the event of a nodefailure in the cluster, the name node may take steps to create newredundant data stores, inform the job tracker of the failure, etc.

The master job tracker 110 coordinates the delegation of tasks acrosstask trackers, and thus distributes processing across the cluster. Tasksmay be delegated to task trackers 115(a)-115(c). The job tracker 110 andname node 130 may communicate with each other and coordinate activities.The job tracker may be aware of the multiple locations of each datablock. As a result, typically the job tracker attempts to assign tasksto server nodes which store the data block(s) associated with the job.This radically reduces network traffic compared with other methods ofdistributed processing. The job tracker 110 may also monitor the healthof each node in the cluster. If a server node goes down, or is otherwiseexperiencing technical problems, the job tracker may reassign tasks fromthe problematic node to another node. The full job received from theclient may also be split into multiple atomic sub-tasks and distributedacross the cluster. As a result, parallel computation and processing ofjobs is achieved.

With reference to FIG. 2, an example flow chart is shown thatillustrates the performance of analytics (e.g., via analytics logic 127and server 120(d)). As discussed above, big data processing posesformidable challenges. To achieve analytics on big data, one solutionwould be to perform a series of fixed steps from raw data to finish. Forexample, if a user wishes to perform a linear logistic regression usingenhanced metadata (e.g., which specifies some columns as ordinal), amap/reduce program may be built that can do only this process. However,this approach is inflexible as there are many forms of datapre-processing and statistical approaches that the user may desire. Inaddition, a user may wish to apply multiple statistical models to thesame pre-processed data. With the fixed approach, the same raw datawould have to be preprocessed multiple times for each analyticsalgorithm. Since partial solutions would not be able to be re-used,computational efficiency is reduced.

In order to process big data, the example embodiment shown in FIG. 2divides each pre-processing, statistical and post-processing step intodiscrete, atomic modules. From the user perspective, the modules mayintuitively be assembled to create module chains that operate to performa specific analytic task. Within each module, a series of discrete stepsor atomic data operations are determined which may be used to createparallelizable map and reduce jobs, as discussed below. Since eachmodule may be parallelized, the solution is scalable as data size andprocessing needs grow. Each module may be a self-contained code packageor script. Source code languages may include Java, JavaScript ObjectNotation Query Language (JAQL) or data manipulation language (DML),although other languages may be employed to implement the techniques ofpresent invention embodiments presented herein.

The inputs and outputs of each module may be pre-determined and have aconsistent data model/schema so that data may be reliably forwarded fromone module to the next in the chain. As shown in FIG. 2, the types ofmodules may be divided into pre-processing modules (e.g., the functionsof which are described with respect to steps 205-240), statisticalmodules (e.g., the functions of which are described with respect tosteps 245 and 255), and post-processing modules (e.g., the functions ofwhich are described with respect to steps 250 and 260). The statisticalmodules may be further divided into descriptive analysis and predictiveanalysis.

In FIG. 2, at step 205 a client job with a series of tasks, and possiblyassociated raw data, may be received. The raw data may becomma-separated values (CSV), but can be any data format. Metadata maythen be generated from the raw data, which may be a required step.Alternatively the user may provide a metadata file along with the rawdata. A metadata file may specify the column and row names, column androw types, and other information about the raw data. At step 210, it maybe automatically determined if filter and project modules are enabled.If yes, the filter and project modules will be executed at step 215. Thefilter module provides the ability to selectively remove data rows. Forexample, the raw data may have a gender column, but the user is onlyinterested in the data for females. The filter module removes rows(tuples) where gender=female. Projection occurs if there are multiplecolumns of data, but the user is only interested in a subset of thecolumns (attributes). The desired columns may be automatically projectedinto the solution, while the unwanted columns are automaticallydiscarded. In this manner, irrelevant tuples and attributes can bedropped early in the process for maximum query optimization. The filterand project modules may be optional based on user input orconfiguration, and may require user input to designate tuples andattributes for inclusion and/or exclusion.

At step 220, it may be determined if the enhance metadata module isactivated. If so, step 225 will be executed to enhance metadata. Some ofthe raw data may already be numerical, but some data may need to beconverted to numbers in order to receive statistical processing. Somedata may be nominal, which is data that does not inherently correspondto any numerical value. For example, a gender field may include valuesof male or female. These data values may be converted to female=1 andmale=2 for data processing purposes. In contrast with nominal data,ordinal data typically lends itself to ordered numbering.Non-dichotomous ordinal data may be, for example, data which consistsentirely of answers like “dislike,” “somewhat like,” and “like verymuch.” Dichotomous ordinal data may be, for example, “healthy” and“sick.” As an example, numerical values may be set such that“dislike”=1, “somewhat like”=2, and “like very much”=3, etc. The systemdoes not necessarily know which data values correspond to whichnumerical value, so the user may be asked to order the possible datavalues. The enhance metadata module performs the data enhancement andmay be optional.

At step 230, it may be determined if the recode module is activated. Therecode module may convert strings or categorical columns in the raw datainto the numerical values as determined in the enhance metadata step225. The analytics logic 127 may automatically assign numerical valuesfor nominal data, although the user may be automatically prompted toprovide numbers for ordinal data. Nominal and ordinal status may beautomatically determined simply by the number of data variations in thedata set, as nominal fields typically only have a few possible values.The recode module may be optional, although it is typically required ifthe enhance metadata module is enabled. Similarly, while the enhancemetadata module may be optional, it is typically required if the recodemodule is enabled.

At step 240, the convert to matrix module may be executed. This step mayconvert the raw data using the metadata into a sparse matrix format,although other forms of matrix and other pre-processing finalizationtechniques may be employed by present invention embodiments presentedherein. The sparse matrix format may be preferred for big data setsbecause large volumes of statistical data typically contain a largenumber of zeroes. The sparse data format does not store a value forzero, and thus the sparse matrix format provides a highly efficientstorage technique. The convert to matrix module 240 may be required.

At steps 245 and/or 255, any number of statistical analyses includingdescriptive analyses and predictive analyses may be performed on theprocessed data by statistical modules. Descriptive analyses are dataanalytics techniques which describe the data that has been collected.They include univariate statistics and bivariate statistics, forexample. Predictive analyses are data analytics which use current andhistorical data to make predictions about future, unknown events. Theseinclude, for example, linear regression, support vector machine (SVM),linear logistic regression (LLR), etc.

Finally, at steps 250 and/or 260 descriptive score or predictive scorepost-processing may be applied by post-processing modules. In the caseof univariate statistics, a univariate decode algorithm may be applied.A bivariate decode may be applied in the case of a bivariate statisticsdescriptive algorithm. As for predictive algorithms, a linear regressionscore algorithm may be automatically performed, suggested or requiredfor execution if a linear regression is performed. Similarly, a supportvector machine (SVM) score algorithm may be automatically performed,suggested or required for an SVM module, and a linear logisticregression (LLR) score module may be automatically performed, suggestedor required for an LLR algorithm. Other post-processing techniques maybe employed by present invention embodiments presented herein. Eachpost-processing module may be automatically performed, suggested orrequired for execution.

The results of the scoring modules may be used to determine ifalternative statistical modules should be automatically executed withthe partial result preprocessed data as input. For example, onepredictive analysis may score poorly, so another would be chosen andexecuted automatically, or suggested to the user for execution.Correlations in the post-processing data may also be used to suggest orautomatically execute statistical modules. For example, if the resultsof a bivariate decode shows that two columns have high correlations,then these two columns may be fed into a linear regression predictiveanalysis.

As discussed previously, modules may have defined inputs and outputs.The user may choose to activate any number of the pre-processing,statistical and post-processing modules, and may choose the order. Theselected order of modules may be automatically tracked to identify anycompatibility problems. For example, two modules may be determined to beor defined as incompatible with each other. As another example, thesystem may allow only one statistical module to be performed per modulechain. Certain module chains and sub-chains may also be recommended. Forexample, as mentioned previously, the LLR score module may be suggestedfor the LLR algorithm. Automatic module suggestions may also occur afterthe analytics logic 127 scans the data. For example, the enhancemetadata module may be suggested if there are rows and columns which donot contain numerical data.

Certain module orderings may also be enforced. For example, statisticalmodules may be required to come after pre-processing modules and beforepost-processing modules. The filter/project module may be required tocome before the enhance metadata module, etc. Some modules may berequired, such as the convert to matrix module, in the example shown in.FIG. 3, the generate metadata and convert to matrix steps may be theminimum pre-processing modules to be executed.

By using these techniques, several advantages can be realized. First,since each module is a discrete, atomic set of actions executed on theraw data set, the results may be verified at each step as an incrementalprocessing model. Second, it is relatively simple and flexible for theuser to choose a different set of modules to perform a specific task.For example, the user may use the generate metadata and convert tosparse matrix modules to accomplish data transformation work if the datais already receded. Or the user can use the generate metadata,filter/project and convert to sparse matrix if the user wishes to prunesome data on a recoiled data set. Partial solutions after a given stepin the module chain may be reused with differing subsequent chains ofmodules. For example, a partial solution of metadata with filter andproject pre-processing in one chain may be used with metadataenhancement and recoding, but this partial solution may be reused withanother module chain which does not provide for metadata enhancement andrecoding. Thus, one or more partial solutions may be used to avoidre-execution of a corresponding selected module in another associatedmodule chain.

Third, once the data analytics process is stabilized, the user cancreate an application chain in a user application so the module chaincan be submitted as a batch. Fourth, in the future, additional modulesmay be added to provide more features and analytics modules based onchanging user requirements. The module design with an underlyingdistributed storage and processing system also hides complexity from theuser, leaving the user to focus on the module chain, rather thanlow-level details. The modules are thus independent, potentiallyre-orderable and reusable, and may be executed as a pipeline (batch)given the user scenario and system requirements.

Turning to FIG. 3, a flow diagram is shown depicting the division of amodule into map and reduce jobs. Map and reduce steps may be scheduledby the job tracker 110 over task trackers 115(a)-115(c), with a modulebeing broken down into atomic steps, as discussed previously. The mapand reduce programs typically operate in three stages: map, shuffle andreduce. The map step performs transformations on input key-value pairs305 to produce output key value pairs on nodes 120(a)-120(c). Theshuffle step moves the output key-value pairs to the appropriate nodes120(a)-120(c) where they will be reduced, and the reduce step takes theoutput key-value pairs and identified duplicates to produce a reducedset of key value pairs 320 on the output node 325.

As an example of an algorithm broken into map and reduce steps,map/reduce may be used to identify the number of letters in each word ofan input string. The input string may be, for example, the text of alarge number of hooks. In the map step, the individual words found inthe books would be mapped to the number of letters in each word to formkey-value pairs. For example, 3=the, 3=you, 3=and, 4=then, 4=what, etc.These might be grouped as 3=[the, you, and], and 4=[then, what] on eachnode performing the task. A number of nodes 120(a)-120(c) in the clustermay perform these computations in parallel, since these operations arestateless, each producing their own partial answer which will be sortedat 310 and sent to the appropriate node in the shuffle stage. Forexample, if one node 120(a) is assigned the task of collecting all datarelated to the number of words with 3 letters, all other nodes in thecluster will forward their partial solutions to node 120(a) during theshuffle stage. Each line, for example 3=[the, you, and], may be passedas an argument to the reduce function, which accepts a list of key-valuepairs. In the reduce stage, the words may be recoded as a number, forexample 3=[the, you, and] is converted to 3:3 at 320. These reductionsmay be performed in parallel, providing a powerful efficiency advantage.The partial results may then be accumulated at a node in the cluster325.

The shuffle and reduce steps may not be relevant to a particular task inquestion. For example, a simple file conversion may not have any reducestep. Conversely, complex computations may require multiple map andreduce steps. As an example, a generate metadata module may be used thatwraps a JAQL, script. The script may first accept a CSV file as input,as well as an input header and input delimiter, all of which may beprovided by a user via a user interface. The input header parameter mayindicate whether the CSV file has a header line, while the delimiterparameter indicates whether fields in the raw data are delimited bycommas, tabs, etc. The raw data may be read line by line, splitting thefirst line to obtain the number and names of columns. Alternatively, thecolumn names may be obtained from the input header. Using a line of dataafter the first line, the data types of each column may be guessed usingregular expression testing. The determined columns names and data typesmay also be output to the metadata file.

The JAQL script may be pre-defined by the developer or user. Based onthe content of the script and parameter values, the JAQL engine maycompile and optimize the execution of the script. In this example, theJAQL engine may generate only one map job: reading the first line of theCSV file as the column names, reading the second line of the CSV file toguess the data type, and then outputting the column names and types tothe metadata file. As the JAQL script becomes more complex with othermodules, the user would only need to create a valid script, as the JAQLengine will spawn map/reduce jobs and optimize the map/reduce executionin a manner which is transparent to the user.

FIG. 4 is a flow chart illustrating example engines used in thegeneration of data analytics. At step 405 module selections and/or rawdata may be input. As the user or administrator selects modules to beexecuted in a module chain, a master script may be automaticallygenerated by, for example, a distributed storage management solution.The master script may be a JAQL script, although other programminglanguages may be employed by present invention embodiments presentedherein. The master script designates the ordering of modules in a chain,as well as which modules will be present in the chain. The system mayalso validate the module chain, checking for required modules andpotential module ordering problems, etc., as discussed previously.

The master script may be passed into a data transformation engine atstep 410. The data transformation engine may be, for example, a JAQLengine which accepts stand-alone scripts for the individual modules inDML to execute data transformation logics, although other engines andscript languages may be employed by present invention embodimentspresented herein.

Once any pre-processing scripts, for example scripts associated withsteps 20S-240 in FIG. 2, have been executed, perhaps by a JAQL engine ona Hadoop cluster, the data transformation is complete and execution flowmoves to the machine learning engine at step 415. The machine learningengine attempts to gain additional data analysis capacities based uponprior data analysis experiences. Especially in regards to predictiveanalytics, which attempts to analyze historical facts to makepredictions about future events, machine learning can aid in increasingthe accuracy of analytics modules. At step 415, the machine learning(ML) engine accepts the partial result, such as the sparse matrixproduced in the pre-processing steps. The ML engine may be based uponSystemML, a Hadoop-based declarative machine learning engine, althoughother machine-learning engines would be consistent with techniquespresented herein. The ML engine takes scripts for statistical modules,for example those associated with steps 245 and 255 from FIG. 2, andautomatically breaks them down into map/reduce jobs. For example, ananalytics module may wrap a DML script to perform a matrix transposefollowed by a matrix multiplication. First the DML script may read intwo files, which may be indicated by a user. The script may compute atranspose of the first file, then multiple by values in the second file,and then output the result to a user-indicated file. The SystemMLengine's compiler and optimizer may decide that two map/reduce jobs arerequired: first to read the first file and transpose it, and the secondis to multiple the transposed first file and the second file. As thescript gets more complex, SystemML is able to optimize the execution ofmap/reduce jobs. The user, however, only needs to ensure that the DMLscript is logically valid and sound. The underlying map/reduce jobcreation and execution may thus be transparent. Each statistical modulemay be expressed in DML a declarative high-level language thatsignificantly improves the productivity for implementing machinelearning algorithms. DML exposes several constructs including linearalgebra primitives that constitute key building blocks for a broad classof supervised and unsupervised machine learning algorithms. DML alsoincorporates machine learning constructs such as cross-validation.Finally, post-processing modules, such as those associated with steps250 and 260 from FIG. 2, may also be applied.

The ML engine may implement optimization techniques to generatelow-level execution plans for map/reduce. The optimizations are based ondata and system characteristics.

The scripts for each module may be automatically converted to map andreduce steps as discussed in regards to FIG. 3 above. In this manner,the master script, which the user may be able to directly edit, mayfocus on the high-level processing steps of the algorithm, rather thanlow-level map/reduce and distributed file system concerns. The divisionof the user script and the generation of map/reduce steps may occur inthe application layer, while the map/reduce jobs may be further dividedor distributed for the lower parallel processing layer across the nodecluster.

FIG. 5 is a flow chart illustrating the generation of data analyticsaccording to one embodiment of the present invention. At step 505, theanalytics may be divided into a set of modules, wherein each module isselectively executed and comprises a script for a parallel processingengine to perform corresponding atomic operation of the analytics. Theuser selection of one or more modules may be received at step 510 toperform desired analytics on the large quantity of data from theexternal mass storage device. At step 515, the selected modules areexecuted such that the parallel processing engine may perforin thecorresponding atomic operations of the desired analytics.

It will be appreciated that the embodiments described above andillustrated in the drawings represent only a few of the many ways ofimplementing embodiments for performing data analytics utilizing auser-configurable group of reusable modules.

The environment of the present invention embodiments may include anynumber of computer or other processing systems (e.g., client or end-usersystems, server systems, etc.) and databases or other repositoriesarranged in any desired fashion, where the present invention embodimentsmay be applied to any desired type of computing environment (e.g., cloudcomputing, client-server, network computing, mainframe, stand-alonesystems, etc.). The computer or other processing systems employed by thepresent invention embodiments may be implemented by any number of anypersonal or other type of computer or processing system (e.g., desktop,laptop, PDA, mobile devices, etc.), and may include any commerciallyavailable operating system and any combination of commercially availableand custom software (e.g., browser software, communications software,server software, profile generation module, profile comparison module,etc.). These systems may include any types of monitors and input devices(e.g., keyboard, mouse, voice recognition, etc.) to enter and/or viewinformation.

It is to be understood that the software (e.g., analytics logic,distributed file storage and processing logic, map/reduce logic, datatransformation engine, machine-learning engine, etc.) of the presentinvention embodiments may be implemented in any desired computerlanguage and could be developed by one of ordinary skill in the computerarts based on the functional descriptions contained in the specificationand flow charts illustrated in the drawings. Further, any referencesherein to software performing various functions generally refer tocomputer systems or processors performing those functions under softwarecontrol. The computer systems of the present invention embodiments mayalternatively be implemented by any type of hardware and/or otherprocessing circuitry.

The various functions of the computer or other processing systems may bedistributed in any manner among any number of software and/or hardwaremodules or units, processing or computer systems and/or circuitry, wherethe computer or processing systems may be disposed locally or remotelyof each other and communicate via any suitable communications medium(e.g., LAN, WAN, Intranet, Internet, hardwire, modem connection,wireless, etc.). For example, the functions of the present inventionembodiments may be distributed in any manner among the variousend-user/client and server systems, and/or any other intermediaryprocessing devices. The software and/or algorithms described above andillustrated in the flow charts may be modified in any manner thataccomplishes the functions described herein. In addition, the functionsin the flow charts or description may be performed in any order thataccomplishes a desired operation.

The software of the present invention embodiments (e.g., analyticslogic, distributed file storage and processing logic, map/reduce logic,data transformation engine, machine learning engine, etc.) may beavailable on a non-transitory computer readable or useable medium (cg,magnetic or optical mediums, magneto-optic mediums, floppy diskettes,CD-ROM, DVD, memory devices, etc) of a stationary or portable programproduct apparatus or device for use with stand-alone systems or systemsconnected by a network or other communications medium.

The communication network may be implemented by any number of any typeof communications network (e.g., LAN, WAN, Internet, Intranet, VPN,etc.). The computer or other processing systems of the present inventionembodiments may include any conventional or other communications devicesto communicate over the network via any conventional or other protocols.The computer or other processing systems may utilize any type ofconnection (e.g., wired, wireless, etc.) for access to the network.Local communication media may be implemented by any suitablecommunication media (e.g., local area network (LAN), hardwire, wirelesslink, Intranet, etc.).

The system may employ any number of any conventional or other databases,data stores or storage structures (e.g., files, databases, datastructures, data or other repositories, distributed file systems etc.)to store information. The database system may be implemented by anynumber of any conventional or other databases, data stores or storagestructures (e.g., files, databases, data structures, data or otherrepositories, distributed file systems, etc.) to store information. Thedatabase system may be included within or coupled to the server and/orClient systems. The database systems and/or storage structures may beremote from or local to the computer or other processing systems, andmay store any desired data (e.g., raw data, partial solutions frommodules, module scripts, map/reduce steps, etc.).

The present invention embodiments may employ any number of any type ofuser interface (e.g., Graphical User Interface (GUI), command-line,prompt, etc.) for obtaining or providing information (e.g., userselections of modules and module orderings, raw data), where theinterface may include any information arranged in any fashion. Theinterface may include any number of any types of input or actuationmechanisms (e.g., buttons, icons, elements, boxes, links, etc.) disposedat any locations to enter/display information and initiate desiredactions via any suitable input devices (e.g., mouse, keyboard, etc). Theinterface screens may include any suitable actuators (e.g., links, tabs,etc.) to navigate between the screens in any fashion.

The report may include any information arranged in any fashion, and maybe configurable based on rules or other criteria to provide desiredinformation to a user (e.g., analytics, etc.).

The present invention embodiments may use other file and engine typesthan those described above. Further, any type of database or data storemay be used and interacted with in the performance of steps describedabove. Using techniques similar to those presented above, many morepre-processing, analytics, and post-processing modules than those listedabove may be used. The present invention embodiments are not limited touse of the specific data types described above.

The present invention embodiments are not limited to the specific tasksor algorithms described above, but may be utilized for any taskrequiring data pre-processing, analytics, data post processing, etc.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and the are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”,“comprising”, “includes”, “including”, “has”, “have”, “having”, “with”and the like, when used in this specification, specify the presence ofstated features, integers, steps, operations, elements, and/orcomponents, but do not preclude the presence or addition of one or moreother features, integers, steps, operations, elements, components,and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the present invention has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the invention. Theembodiment was chosen and described in order to best explain theprinciples of the invention and the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system,”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible (non-transitory) medium that can contain, orstore a program for use by or in connection with an instructionexecution system, apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more job instructions for implementingthe specified logical function(s). It should also be noted that, in somealternative implementations, the functions noted in the block may occurout of the order noted in the figures. For example, two blocks shown insuccession may, in fact, be executed substantially concurrently, or theblocks may sometimes be executed in the reverse order, depending uponthe functionality involved, it will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts, or combinations of special purpose hardware andcomputer instructions.

What is claimed is:
 1. A computer-implemented method of performinganalytics on a large quantity of data accommodated by an external massstorage device comprising: dividing the analytics into a set of modules,wherein each module is selectively executed and comprises a script for aparallel processing engine to perform a corresponding atomic operationof the analytics; receiving a user selection of one or more modules toperform desired analytics on the large quantity of data from theexternal mass storage device; and executing the selected modules suchthat the parallel processing engine performs the corresponding atomicoperations of the desired analytics.
 2. The method of claim 1, whereineach module produces one or more partial solutions for the analytics. 3.The method of claim 2, further comprising: using the one or more partialsolutions to avoid re-execution of a corresponding selected module. 4.The method of claim 2, further comprising: validating the one or morepartial solutions.
 5. The method of claim 1, wherein the atomicoperations include map and reduce operations.
 6. The method of claim 1,wherein the modules include pre-processing modules, statistical modules,and post-processing modules.
 7. The method of claim 1, wherein theexternal mass storage device is a Hadoop Distributed File System (HDFS).